# -*- coding: UTF-8 -*-
# @Project ：big-data 
# @File    ：广州二手房.py
# @Author  ：于金龙
# @IDE     ：PyCharm 
# @Date    ：2024/4/27 0:13
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.feature_selection import mutual_info_classif
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
from sklearn.model_selection import train_test_split

"""
基于广州各区二手房价的数据，按照题目要求使用Python完成下列任务。

（1）导入相关库，读取“广州二手房价.csv”数据，合并“region”与“positionInfo”列数据，并新建“region_positionInfo”列用于保存；去除“'unitPrice'”列数据存在的特殊符号“，”。





（4）按照训练集：测试集为8：2的比例进行数据集的划分，并将随机种子设置为4。

（5）查看特征数据之间的特征重要性。

（6）构建随机森林回归模型并训练，输出模型在训练集上的得分，并使用模型对测试集数据进行预测。

（7）计算模型的评价指标r2系数、MAE（平均绝对误差）、MSE（均方误差）与RMSE（均方跟误差）。
"""
"""
（1）导入相关库，读取“广州二手房价.csv”数据，合并“region”与“positionInfo”列数据，
并新建“region_positionInfo”列用于保存；去除“'unitPrice'”列数据存在的特殊符号“，”。"""

df = pd.read_csv("./广州二手房价.csv")
df['region_positionInfo'] = df['region'] + '_' + df['positionInfo']
df['unitPrice'] = df['unitPrice'].str.replace(',', '', )

# （2）将新建的“region_positionInfo”列数据进行数值型编码，并删除原来的“region”与“positionInfo”列数据。
df1 = df.loc[:, ('unitPrice', 'region_positionInfo')]
df2 = df1.sort_values(by='unitPrice', ascending=False)
region_positionInfo = df2['region_positionInfo'].tolist()[::-1]
region_positionInfo_dict = {}

for n, i in enumerate(region_positionInfo):
    region_positionInfo_dict[1] = n + 1
df['region_positionInfo'] = df['region_positionInfo'].map(region_positionInfo_dict)

df.drop(['region', 'positionInfo'], axis=1, inplace=True)
print(df.head())
